cmake_minimum_required(VERSION 3.5.0)

project(GenGtkCode)

#启用当前头文件目录
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

# 对MSVC，默认文件编码为UTF-8，以规避各种编译警告、显示乱码
# 同时，关闭C4996/C4267告警
if (MSVC)
  add_compile_options(/utf-8 /wd4996 /wd4267)
endif()

#将各种文件归类到指定变量
FILE(GLOB_RECURSE HEADER_FILES "*.h")
FILE(GLOB_RECURSE SRC_FILES "*.cpp")

#查找当前目录下所有的.h和.cpp文件
SOURCE_GROUP("Header Files" FILES ${HEADER_FILES})
SOURCE_GROUP("Source Files" FILES ${SRC_FILES})

# 如果需要调试LUA，则使用lua5.3（动态链接），否则使用lua53（静态链接）
if (DEBUG_LUA)
  set(LUA_LIB lua5.3)
  # 添加调试LUA的宏，以便在调试LUA自动连接LuaPanda进行调试
  ADD_DEFINITIONS(-DDEBUG_LUA)
else()
  set(LUA_LIB lua53)
endif()

# 库的依赖路径: lib/Win32/Release | lib/Win64/Release | lib/Linux_x86_64/Release | lib/Linux_aarch64/Release | lib/Linux_armv7l/Release
LINK_DIRECTORIES(${PROJECT_LIBRARY_DIR})

# 当前程序依赖于当前目录下的源代码/头文件
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_FILES} ${HEADER_FILES})

if (NOT WIN32)
  set_target_properties(${PROJECT_NAME} PROPERTIES
    # 固定生成RPATH，并设置RPATH为ELF文件的当前路径
      INSTALL_RPATH "$ORIGIN"
      CXX_STANDARD 11
      CXX_STANDARD_REQUIRED ON
  )
else()
  set_target_properties(${PROJECT_NAME} PROPERTIES
      CXX_STANDARD 11
      CXX_STANDARD_REQUIRED ON
  )
endif()

# 依赖库
if (WIN32)
  target_link_libraries(${PROJECT_NAME} PRIVATE gtkui ${LUA_LIB})
else()
  target_link_libraries(${PROJECT_NAME} PRIVATE gtkui ${LUA_LIB} dl)
endif()

if (NOT WIN32)
  set_target_properties(${PROJECT_NAME} PROPERTIES
      # 固定生成RPATH，并设置RPATH为ELF文件的当前路径
      INSTALL_RPATH "$ORIGIN"
      LINK_FLAGS "-Wl,--disable-new-dtags")
endif()

#引入库目录头文件
INCLUDE_DIRECTORIES(
	${CMAKE_SOURCE_DIR}/include
)

# 安装至特定路径下
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
